package repositories;

import java.util.Collection;
import java.util.Date;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import domain.Cuota;

@Repository
public interface CuotaRepository extends JpaRepository<Cuota, Integer> {

	@Query("select c from Cuota c where c.tipo='Extraordinaria' and c.comunidadDeVecinos.id=?1")
	Collection<Cuota> findCuotasExtraordinariaByComunidadDeVecinos(
			int comunidadDeVecinosId);

	@Query("select c from Cuota c where c.tipo='Ordinaria' and c.comunidadDeVecinos.id=?1")
	Collection<Cuota> findCuotasOrdinariasByComunidadDeVecinos(
			int comunidadDeVecinosId);

	@Query("select max(c.fecha) from Cuota c where c.tipo='Ordinaria' and c.comunidadDeVecinos.id=?1")
	Collection<Date> findFechaUltimaCuotaOrdinariaByComunidad(
			int comunidadDeVecinosId);

	@Query("select c from Cuota c where c.vecino.id=?1")
	Collection<Cuota> findCuotasByVecino(int vecinoId);

	@Query("select c from Cuota c where c.estado='No pagada' and c.vecino.id=?1")
	Collection<Cuota> findCuotasNoPagadasByVecino(int vecinoId);

	@Query("select c from Cuota c where c.comunidadDeVecinos.id=?1")
	Collection<Cuota> findCuotasByComunidadDeVecinos(int comunidadDeVecinosId);

	@Query("select c from Cuota c where c.estado='No Pagada' and c.comunidadDeVecinos.id=?1")
	Collection<Cuota> findCuotasNoPagadasByComunidadDeVecinos(
			int comunidadDeVecinosId);

	@Query("select c from Cuota c where c.vecino.id=?1 and c.comunidadDeVecinos.id=?2")
	Collection<Cuota> findCuotasNoPagadasByVecinoYComunidad(int morosoId,
			int comunidadId);
}
